package com.hqd.ch03.v18.factory;

import com.hqd.ch03.v18.config.BeanPostProcessor;
import com.hqd.ch03.v18.config.Scope;
import com.hqd.ch03.v18.listener.BeanFactoryListener;

import java.beans.PropertyEditor;

public interface ConfigurableBeanFactory extends BeanFactory {
    /**
     * 单例
     */
    String SCOPE_SINGLETON = "singleton";
    /**
     * 多利
     */
    String SCOPE_PROTOTYPE = "prototype";

    void registerScope(String scopeName, Scope scope);

    void registerCustomEditor(Class<?> requiredType, Class<? extends PropertyEditor> propertyEditorClass);

    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    void addBeanFactoryListener(BeanFactoryListener<?> listener);
}
